home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / Pascal / Snippets / PNL Libraries / Assembly / PreserveA5.a < prev    next >
Text File  |  1995-06-12  |  842b  |  45 lines

  1.     include    'sysequ.a'
  2.     include    'traps.a'
  3.     proc    
  4.     export    SetupPreserveA5, SetPreservedA5, RestoreA5, PreCompletion, SavedA5Value;
  5.     
  6. ; procedure SetupPreserveA5;
  7. SetupPreserveA5
  8.     lea        SavedA5Value,a0
  9.     move.l    a5,(a0)
  10.     rts
  11.     
  12. ; function SetPreservedA5:Ptr;
  13. SetPreservedA5
  14.     move.l    a5,4(sp)
  15.     move.l    SavedA5Value,a5
  16.     rts
  17.     
  18. ; procedure RestoreA5(olda5:Ptr);
  19. RestoreA5
  20.     move.l    4(sp),a5
  21.     move.l    (sp)+,(sp)
  22.     rts
  23.  
  24. ; procedure PreCompletion(a0 : ParamBlocPtr);
  25. PreCompletion
  26.     move.l    a5,-(SP)            ; Preserve A5 register.
  27.     move.l    SavedA5Value,A5        ; Set A5 to passed value (SavedA5Value).
  28.  
  29.     move.l    a0, -(SP)            ; Pass PB pointer as the parameter.
  30.     move.l    -4(A0),A0            ; A0 = real completion routine address.
  31.     JSR        (A0)                ; Transfer control to ourCompletion.
  32.     
  33.     move.l    (SP)+,A5            ; Restore A5 register.
  34.     rts
  35.  
  36. SavedA5Value    ds.l    1
  37.  
  38.     endp
  39.  
  40.     end
  41.     
  42. asm -wb "{active}"
  43.  
  44.  
  45.